package com.crm.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.crm.entity.Student;
import com.crm.entity.User;
import com.crm.service.StudentService;
import com.crm.service.UserService;
import com.crm.util.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController//标注当前类是controller类，controller用 于处理客户端请求，加Rest表示当前类的所有方法都返回json数据，不走视图
public class ChartController {
    @Resource//设置注入方式，spring 自动在spring容器找到叫这个名或这个类型的对象，赋给当前属性，controller调 用service
    private UserService usersService;//user的业务层父接口
    @Resource//设置注入方式，spring 自动在spring容器找到叫这个名或这个类型的对象，赋给当前属性，controller调 用service
    private StudentService studentService;//student的业务层父接口
    private Map<String,Object> map = new HashMap<>();



    @RequestMapping("/autoSave") // 客户端请求地址
    public Object autoSave() {//返 回值和方法名，object表示可以返回任何对象，因为object是任何对象的父对象，要父给子没问匙

        return null;
    }

    /**
     * 查询咨询师或者网络咨询拥有的学生人数
     * @param rid
     * @return
     */
    @RequestMapping("/chart1") // 客户端请求地址
    public Object chart1(Integer rid) {//返 回值和方法名，object表示可以返回任何对象，因为object是任何对象的父对象，要父给子没问匙
        List<String> userName = new ArrayList<>();
        List<Integer> stuNum = new ArrayList<>();
        List<User> users = usersService.selectUserByRid(rid);

        for (User user : users) {
            //咨询师名称
            userName.add(user.getUserName());
            if (rid.equals(3)) {//咨询师
                //咨询师拥有的学生人数
                stuNum.add(studentService.count(new QueryWrapper<Student>().eq("uid", user.getUid())));
            }else{
                stuNum.add(studentService.count(new QueryWrapper<Student>().eq("data_entry_clerk", user.getUserName())));
            }
        }
        map.put("userName", userName);
        map.put("stuNum", stuNum);
        return map;
    }
}
